home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / WarpQuake / Src / pr_comp.h < prev    next >
Text File  |  2000-05-22  |  3KB  |  181 lines

  1. /*
  2. Copyright (C) 1996-1997 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20.  
  21. // this file is shared by quake and qcc
  22.  
  23. typedef int    func_t;
  24. typedef int    string_t;
  25.  
  26. typedef enum {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer} etype_t;
  27.  
  28.  
  29. #define    OFS_NULL        0
  30. #define    OFS_RETURN        1
  31. #define    OFS_PARM0        4        // leave 3 ofs for each parm to hold vectors
  32. #define    OFS_PARM1        7
  33. #define    OFS_PARM2        10
  34. #define    OFS_PARM3        13
  35. #define    OFS_PARM4        16
  36. #define    OFS_PARM5        19
  37. #define    OFS_PARM6        22
  38. #define    OFS_PARM7        25
  39. #define    RESERVED_OFS    28
  40.  
  41.  
  42. enum {
  43.     OP_DONE,
  44.     OP_MUL_F,
  45.     OP_MUL_V,
  46.     OP_MUL_FV,
  47.     OP_MUL_VF,
  48.     OP_DIV_F,
  49.     OP_ADD_F,
  50.     OP_ADD_V,
  51.     OP_SUB_F,
  52.     OP_SUB_V,
  53.     
  54.     OP_EQ_F,
  55.     OP_EQ_V,
  56.     OP_EQ_S,
  57.     OP_EQ_E,
  58.     OP_EQ_FNC,
  59.     
  60.     OP_NE_F,
  61.     OP_NE_V,
  62.     OP_NE_S,
  63.     OP_NE_E,
  64.     OP_NE_FNC,
  65.     
  66.     OP_LE,
  67.     OP_GE,
  68.     OP_LT,
  69.     OP_GT,
  70.  
  71.     OP_LOAD_F,
  72.     OP_LOAD_V,
  73.     OP_LOAD_S,
  74.     OP_LOAD_ENT,
  75.     OP_LOAD_FLD,
  76.     OP_LOAD_FNC,
  77.  
  78.     OP_ADDRESS,
  79.  
  80.     OP_STORE_F,
  81.     OP_STORE_V,
  82.     OP_STORE_S,
  83.     OP_STORE_ENT,
  84.     OP_STORE_FLD,
  85.     OP_STORE_FNC,
  86.  
  87.     OP_STOREP_F,
  88.     OP_STOREP_V,
  89.     OP_STOREP_S,
  90.     OP_STOREP_ENT,
  91.     OP_STOREP_FLD,
  92.     OP_STOREP_FNC,
  93.  
  94.     OP_RETURN,
  95.     OP_NOT_F,
  96.     OP_NOT_V,
  97.     OP_NOT_S,
  98.     OP_NOT_ENT,
  99.     OP_NOT_FNC,
  100.     OP_IF,
  101.     OP_IFNOT,
  102.     OP_CALL0,
  103.     OP_CALL1,
  104.     OP_CALL2,
  105.     OP_CALL3,
  106.     OP_CALL4,
  107.     OP_CALL5,
  108.     OP_CALL6,
  109.     OP_CALL7,
  110.     OP_CALL8,
  111.     OP_STATE,
  112.     OP_GOTO,
  113.     OP_AND,
  114.     OP_OR,
  115.     
  116.     OP_BITAND,
  117.     OP_BITOR
  118. };
  119.  
  120.  
  121. typedef struct statement_s
  122. {
  123.     unsigned short    op;
  124.     short    a,b,c;
  125. } dstatement_t;
  126.  
  127. typedef struct
  128. {
  129.     unsigned short    type;        // if DEF_SAVEGLOBGAL bit is set
  130.                                 // the variable needs to be saved in savegames
  131.     unsigned short    ofs;
  132.     int            s_name;
  133. } ddef_t;
  134. #define    DEF_SAVEGLOBAL    (1<<15)
  135.  
  136. #define    MAX_PARMS    8
  137.  
  138. typedef struct
  139. {
  140.     int        first_statement;    // negative numbers are builtins
  141.     int        parm_start;
  142.     int        locals;                // total ints of parms + locals
  143.     
  144.     int        profile;        // runtime
  145.     
  146.     int        s_name;
  147.     int        s_file;            // source file defined in
  148.     
  149.     int        numparms;
  150.     byte    parm_size[MAX_PARMS];
  151. } dfunction_t;
  152.  
  153.  
  154. #define    PROG_VERSION    6
  155. typedef struct
  156. {
  157.     int        version;
  158.     int        crc;            // check of header file
  159.     
  160.     int        ofs_statements;
  161.     int        numstatements;    // statement 0 is an error
  162.  
  163.     int        ofs_globaldefs;
  164.     int        numglobaldefs;
  165.     
  166.     int        ofs_fielddefs;
  167.     int        numfielddefs;
  168.     
  169.     int        ofs_functions;
  170.     int        numfunctions;    // function 0 is an empty
  171.     
  172.     int        ofs_strings;
  173.     int        numstrings;        // first string is a null string
  174.  
  175.     int        ofs_globals;
  176.     int        numglobals;
  177.     
  178.     int        entityfields;
  179. } dprograms_t;
  180.  
  181.